//#include "MultimodalTestApp.h"
//#include <Windows.h>
//#include <sphelper.h>
//#pragma warning(disable:4995)
//#include <iostream>
//#include <functiondiscoverykeys.h>
//#include <MMDeviceAPI.h>
//#include <AudioClient.h>
//#include <AudioPolicy.h>

class VoiceRecognizer;
class Speaker;
class NetListener;
class World;
class wiimote;


#ifndef COMMANDHANDLER_H
#define COMMANDHANDLER_H

class MultimodalTestApp;
namespace Ogre{
	class Vector2;
}

class CommandHandler{
private:
	MultimodalTestApp *app;
	Speaker *speaker;
	NetListener *netListener;
	VoiceRecognizer *voiceRecognizer;
	World *m_world;
	wiimote *wiiremote;
	int actionFromListener;
	int gameStateFromListener;
	float physicsElementFromListener[3];
	int actionFromApp;
	int gameStateFromApp;

public:
	//CommandHandler(MultimodalTestApp *app, World *world);
	CommandHandler(MultimodalTestApp *app);
	~CommandHandler(void);
	
	Speaker* getSpeaker(void){return speaker;}
	MultimodalTestApp* getApp(void){return app;}
	VoiceRecognizer* getVoiceRecognizer(void){return voiceRecognizer;}
	NetListener* getNetListener(void){return netListener;}
	wiimote* getWiiRemote(void) { return wiiremote; }

	void startNetListener(void);
	void startVoiceRecognizer(void);
	void startWiiRemote(void);

	void setGameState(bool fromApp, int gameState);
	int getGameState(bool fromApp);

	void setAction(bool fromApp, int action);
	int getAction(bool fromApp);

	void setPhysics(bool fromApp, int physicsElement, float physicsValue); 
	float getPhysics(bool fromApp, int physicsElement);

	void setHandPosition(Ogre::Vector2 handPosition);
	Ogre::Vector2 getHandPosition();
};
#endif
